// go run this go file
// test passed on Windows
package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
	"os/exec"
	"runtime"
)

// VideoResponse 定义从 API 返回的数据结构
type VideoResponse struct {
	Code int    `json:"code"`
	Msg  string `json:"msg"`
	Data struct {
		Video string `json:"video"`
	} `json:"data"`
}

func main() {
	// 第一步：发送请求获取视频链接
	apiURL := "https://api.52vmy.cn/api/video/girl"
	resp, err := http.Get(apiURL)
	if err != nil {
		fmt.Println("Error fetching video URL:", err)
		return
	}
	defer resp.Body.Close()

	// 第二步：读取响应体
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Error reading response body:", err)
		return
	}

	// 第三步：解析 JSON 响应
	var videoResponse VideoResponse
	err = json.Unmarshal(body, &videoResponse)
	if err != nil {
		fmt.Println("Error unmarshaling response data:", err)
		return
	}

	// 检查 API 返回的状态码
	if videoResponse.Code != 200 {
		fmt.Println("Failed to fetch video URL:", videoResponse.Msg)
		return
	}

	// 提取视频链接
	videoURL := videoResponse.Data.Video
	fmt.Println("视频链接：", videoURL)

	// 第四步：使用系统默认浏览器打开视频链接
	// 根据操作系统选择不同的命令
	var openCommand string
	_ = openCommand
	switch {
	case videoURL == "":
		fmt.Println("视频链接为空，无法播放。")
		return
	case runtime.GOOS == "windows":
		openCommand = "start"

	case runtime.GOOS == "darwin": // macOS
		openCommand = "open"
	default: // Linux
		openCommand = "xdg-open"
	}
	// 因为我的windows path环境变量有问题，如果你的没问题，你可以不用绝对路径
	// cmd := exec.Command("C:\\Windows\\System32\\cmd.exe", "/c", "start", videoURL)
	// 使用 os/exec 包调用系统命令打开浏览器
	// 取消注释下面一句
	// cmd := exec.Command(openCommand, videoURL)

	cmd := exec.Command("C:\\Users\\etcix\\AppData\\Local\\Microsoft\\WindowsApps\\MediaPlayer.exe", videoURL)
	err = cmd.Start()
	if err != nil {
		fmt.Println("Error opening video URL in browser:", err)
		return
	}

	fmt.Println("视频正在浏览器中播放...")
}
